package com.uuzz.lottery.agent.gateway.business;

import com.uuzz.lottery.agent.gateway.base.IAppendCall;
import com.uuzz.lottery.agent.gateway.base.IConvertor;
import com.uuzz.lottery.agent.gateway.base.ISupplier;
import com.uuzz.lottery.agent.gateway.protocol.IProtocol;
import com.uuzz.lottery.agent.gateway.protocol.IProtocolIn;
import com.uuzz.lottery.agent.gateway.protocol.IProtocolOut;


/**
 * 
 * 类 名: IBusiness
 * 描 述: 业务处理
 * 作 者: liuqing
 * 创 建： 2015年5月4日
 * 版 本：
 *
 * 历 史: (版本) 作者 时间 注释
 */
public interface IBusiness<IN,OUT,BIN extends IProtocolIn,BOUT extends IProtocolOut,P extends IProtocol<BIN,BOUT>,SI extends ISupplier<IN,BIN>,CO extends IConvertor<BOUT,OUT>>
extends IAppendCall<IN,OUT,BIN,BOUT,P,SI,CO>{
	
	/**
	 * 
	 * <br>描 述：取得业务标示
	 * <br>作 者：liuqing
	 * <br>历 史: (版本) 作者 时间 注释 
	 * @return
	 */
	String businessToken();
	/**
	 * 
	 * 描 述：处理业务
	 * 作 者：liuqing
	 * 历 史: (版本) 作者 时间 注释 
	 * @param in
	 * @return
	 */
	boolean beforeCall(IN in, OUT out);
	
	/**
	 * 
	 * 描 述：
	 * 作 者：liuqing
	 * 历 史: (版本) 作者 时间 注释 
	 * @param in
	 * @param out
	 * @param bin
	 * @param bout
	 */
	void afterCall(IN in, OUT out, BIN bin, BOUT bout);
}
